import {
    getPublicKey
} from "./auth";


import JSEncrypt from "jsencrypt";

import CryptoJS from 'crypto-js';

// 创建加密对象并设置公钥
const encryptor = new JSEncrypt();
// 封装加密方法
export function encryptData(data) {
    // 获取公钥
    const publicKey = getPublicKey();
    encryptor.setPublicKey(publicKey);

    return encryptor.encrypt(JSON.stringify(data));
}

// 封装解密方法
export function decryptData(data) {
    // 获取公钥
    const publicKey = getPublicKey();
    encryptor.setPublicKey(publicKey);

    // 私钥字符串，需要自己生成并妥善保管
    // const privateKey = `-----BEGIN PRIVATE KEY-----\n....\n-----END PRIVATE KEY-----`
    // const decryptor = new JSEncrypt()
    // decryptor.setPrivateKey(privateKey)
    // return JSON.parse(decryptor.decrypt(data))

    // 实际应用中，私钥一般不会存放在前端，而是由后端进行解密并返回解密后的数据
    // 这里只是简单地返回加密的数据，不要将私钥放在前端
    return encryptor.decrypt(data);
}
// 计算SHA512的值
export function calculateSHA512(data) {
    return new Promise((resolve) => {
        const reader = new FileReader();
        reader.onload = () => {
            const arrayBuffer = reader.result;
            const wordArray = CryptoJS.lib.WordArray.create(arrayBuffer);
            const hash = CryptoJS.SHA512(wordArray);
            resolve(hash.toString());
        };
        reader.readAsArrayBuffer(data);
    });
}